iT邦幫忙

2024 iThome 鐵人賽

DAY 27
0

簡介

Web Application 是許多開發者經常接觸的一類應用程式。因此,開發者也很常為 Web 應用程式撰寫 Test Code。本篇文章將會介紹如何為 Web Application 撰寫 Test Code,幫助你更加了解這一重要的開發流程。

對於當前主流的 Python Web 應用程式框架,例如 Django、Flask 和 FastAPI,它們都提供了內建的測試工具,讓開發者能夠輕鬆撰寫測試代碼來確保應用程式的穩定性與可靠性。

在本文中,我將以 Flask 為例,詳細介紹如何使用內建的測試工具為 Web Application 撰寫 Test Code。

範例

本次範例使用的是 Flask 2.3.3 版本

poetry add Flask==2.3.3

首先,我們可以使用 poetry new demo_flask 指令來建立一個新的專案目錄。接著,進入 /demo_flask/demo_flask 目錄,在該處創建一個名為 app.py 的檔案。

這份 Product Code 與先前介紹的 Flask 範例相似,該 Web Application 提供了一個 HTTP GET Endpoint,用戶可以透過這個端點來獲取帳號的詳細資訊。

from flask import Flask, jsonify, request

app = Flask(__name__)


@app.route("/accounts/<account_id>")
def get_account(account_id: str):
    return f"Account {account_id}"


if __name__ == "__main__":
    app.run(debug=True)

接著,我們需要在 /demo_flask/tests 目錄下建立一個名為 test_app.py 的測試檔案。此 Test Code 與之前的 pytest 範例相似,使用 Fixture 來封裝測試的 Arrange 階段。本次將封裝 Flask 提供的 test_client,該工具能夠模擬使用者對 Web Application 的互動,依據 Test Code 中設定的 URL 和參數來發送請求。在此範例中,模擬的使用者會向 /accounts/john123 URL 發送請求。最後,我們會驗證 Web Application 回傳的資料是否符合預期,以確保系統的正確性。

import pytest
from demo_flask.app import app


@pytest.fixture
def client():
    with app.test_client() as client:
        yield client


def test_get_account_endpoint(client):
    # Act
    response = client.get("/accounts/john123")

    # Assert
    assert response.data == b"Account john123"

我們回到專案的根目錄,並執行 poetry run pytest即可看到測試結果

https://ithelp.ithome.com.tw/upload/images/20241010/201686635izEM5kozZ.png


上一篇
[Day 26] Responses
下一篇
[Day 28] Locust
系列文
Python 不止於數據,開發應用程式它也在行!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言